home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / VLN_20 / PWRROOT.PAS < prev    next >
Pascal/Delphi Source File  |  1995-03-30  |  3KB  |  107 lines

  1. Program MiscOps;    { Large Number Nth Root  }
  2.          { Heavily uses Divide in printing out the answer }
  3.  
  4. uses    wincrt, windos, lnk23;
  5.  
  6. const ln10ln2 = 3.3219; {  multiplier for  vs 10^n / 2^n }
  7.       ln65k10 = 4.8165 ;
  8. {$I vlnconst.inc}
  9. var
  10.      i, key  : integer;
  11.      CountMax,StdVLNSize : integer;
  12.      a, b, c, d, e, f, qt, er, rm     : integer; { pointers to the numbers }
  13.      m, n, p, q     : integer;
  14.      longLSB : longint;
  15.      vlnGroup : array[0..99] of integer;
  16.      Done : boolean;
  17.  
  18. {=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\}
  19. procedure WriteHexReg( r : integer; S : String );
  20.   const HexA : String =('0123456789ABCDEF');
  21.   var c, i, n : integer;
  22.       S1 : String[6];
  23.       w  : word;
  24.   begin
  25.   Write(S);
  26.   c := getcount(r);
  27.   while c>0 do
  28.     begin
  29.        w := GetWord(r,c);
  30.        dec(c);
  31.        S1 := '-    -';
  32.        for i := 1 to 4 do
  33.          begin
  34.            n := w and $F;
  35.            w := w shr 4;
  36.            S1[6-i] := HexA[n+1];
  37.          end;
  38.        write(' ',c,'>',S1,' ');
  39.     if   (c mod 4 = 0) then writeln;
  40.     end;
  41.  
  42.  end;
  43. {=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\}
  44. procedure WriteReg( r : integer; S : String );
  45. var
  46.     mplyer : integer;
  47. begin
  48.   mplyer := 0;
  49.   Write(S);
  50.   if getcount(r) > 0 then
  51.           write ( '[',mplyer,']',DivByBillion(r):9,'  '  );
  52.  
  53.   while  getcount(quotient) > 0  do begin
  54.              { quotient is put into this reg }
  55.           inc(mplyer,9);
  56.           if (mplyer mod 36 = 0) then
  57.              begin
  58.                writeln;
  59.                write(' >>');
  60.              end;
  61.           write ( '[',mplyer,']',DivByBillion(quotient):9,'  ' );
  62.          end;
  63.  
  64.   writeln;
  65. end;
  66.  
  67. {=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\}
  68. {             Main                   }
  69. {=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\}
  70.  var  itr, fst, loop, sgn : integer;
  71.  
  72.  begin
  73.   {  Setwksize(100); }
  74.     OpenTempRegs;
  75.  
  76.  
  77.     CountMax := Getwksize div 4;      { set count to anyvalue <= wksize }
  78.     StdVLNSize := CountMax*2+6; {these variables need this much storage }
  79.  
  80.     a:= 11; b := 22; c:= 36; d := 49; e := 52; f := 16;
  81.     f := 2000;
  82.  
  83.        Number_Op(c,SetSmall,11810);
  84.        WriteReg(c,'Large Number ');
  85.  
  86.        Register_Op(d,Copy,c);
  87.  
  88.  
  89.        Number_Op(d,NthPower,231);
  90.        WriteReg(d,'Nth Power ');
  91.        Number_Op(d,NthRoot,231);
  92.        WriteReg(d,'Nth Root ');
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.     writeln('--------------------------------');
  101.     writeln('Done!');
  102.  
  103.  
  104.  
  105.    CloseTempRegs;
  106.  
  107.   end.